home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / boot / diskBoot.OpenProm / RCS / main.c,v < prev    next >
Text File  |  1991-09-01  |  9KB  |  469 lines

  1. head     1.10;
  2. branch   ;
  3. access   ;
  4. symbols  ;
  5. locks    ; strict;
  6. comment  @ * @;
  7.  
  8.  
  9. 1.10
  10. date     91.09.01.16.41.03;  author dlong;  state Exp;
  11. branches ;
  12. next     1.9;
  13.  
  14. 1.9
  15. date     90.11.27.11.17.24;  author jhh;  state Exp;
  16. branches ;
  17. next     1.8;
  18.  
  19. 1.8
  20. date     90.11.27.10.37.55;  author rab;  state Exp;
  21. branches ;
  22. next     1.7;
  23.  
  24. 1.7
  25. date     90.07.17.15.41.53;  author mendel;  state Exp;
  26. branches ;
  27. next     1.6;
  28.  
  29. 1.6
  30. date     89.01.06.08.12.02;  author brent;  state Exp;
  31. branches ;
  32. next     1.5;
  33.  
  34. 1.5
  35. date     87.05.11.11.06.57;  author brent;  state Exp;
  36. branches ;
  37. next     1.4;
  38.  
  39. 1.4
  40. date     86.07.24.11.25.46;  author brent;  state Exp;
  41. branches ;
  42. next     1.3;
  43.  
  44. 1.3
  45. date     86.07.23.13.33.11;  author brent;  state Exp;
  46. branches ;
  47. next     1.2;
  48.  
  49. 1.2
  50. date     86.07.21.09.31.17;  author brent;  state Exp;
  51. branches ;
  52. next     1.1;
  53.  
  54. 1.1
  55. date     86.07.16.13.23.46;  author brent;  state Exp;
  56. branches ;
  57. next     ;
  58.  
  59.  
  60. desc
  61. @main boot program
  62. @
  63.  
  64.  
  65. 1.10
  66. log
  67. @Lots of changes for sun4c
  68. @
  69. text
  70. @/* 
  71.  * main.c --
  72.  *
  73.  *    The main program for booting.
  74.  *
  75.  * Copyright 1986 Regents of the University of California
  76.  * All rights reserved.
  77.  */
  78.  
  79. #ifdef  notdef
  80. static char rcsid[] = "$Header: /sprite/src/boot/sunOpenProms/RCS/main.c,v 1.9 90/11/27 11:17:24 jhh Exp Locker: dlong $ SPRITE (Berkeley)";
  81. #endif not lint
  82.  
  83.  
  84. #include "sprite.h"
  85. #include "machMon.h"
  86. #include "fsBoot.h"
  87. #include "boot.h"
  88.  
  89. extern Fs_Device fsDevice;        /* Global FS device descriptor */
  90.  
  91. void Exit();
  92.  
  93. /*
  94.  *----------------------------------------------------------------------
  95.  *
  96.  * main --
  97.  *
  98.  *      This gets arguments from the PROM, calls other routines to open
  99.  *      and load the program to boot, and then transfers execution to that
  100.  *      new program.
  101.  *
  102.  * Results:
  103.  *    None.
  104.  *
  105.  * Side effects:
  106.  *    None.
  107.  *
  108.  *----------------------------------------------------------------------
  109.  */
  110.  
  111. main()
  112. {
  113.     ReturnStatus status;
  114.     register int index;            /* Loop index */
  115.     register int entry;            /* Entry point of boot program */
  116.     Fsio_FileIOHandle *handlePtr;    /* Handle for boot program file */
  117.     char devBuf[64], *devName;
  118.     char *fileName = "vmsprite";
  119.  
  120.     /*
  121.      * The Sun prom collects the boot command line arguments and
  122.      * puts makes them available throught the rom vector.
  123.      */
  124.     if (romVectorPtr->v_romvec_version >= 2) {
  125.     devName = *romVectorPtr->bootpath;
  126.     } else {
  127.     MachMonBootParam *paramPtr;        /* Ref to boot params supplied
  128.                          * by the PROM montor */
  129.     paramPtr = *romVectorPtr->bootParam;
  130.     devName = paramPtr->argPtr[0];
  131.     Mach_MonPrintf("Sprite Boot %s %s\n", devName, paramPtr->fileName);
  132.  
  133.     for (index = 0 ; index < 8; ++index) {
  134.         if (paramPtr->argPtr[index] != (char *)0) {
  135.         if (strcmp(paramPtr->argPtr[index], "-dev") == 0 && index < 7) {
  136.             devName = paramPtr->argPtr[++index];
  137.         }
  138.         } else {
  139.         break;
  140.         }
  141.     }
  142.     if (paramPtr->fileName[0]) {
  143.         fileName = paramPtr->fileName;
  144.     }
  145.     }
  146.  
  147.     /*
  148.      * Set up state about the boot device.
  149.      */
  150.     dev_config(devName, &fsDevice);
  151.     Mach_MonPrintf("Sprite Boot %s %s\n", devName, fileName);
  152.     /*
  153.      * Set up state about the disk.
  154.      */
  155.     status = FsAttachDisk(&fsDevice);
  156. #ifndef SCSI3_BOOT
  157.     if (status != SUCCESS) {
  158.     Mach_MonPrintf("Can't attach disk, status <0x%x>\n",  status);
  159.     goto exit;
  160.     }
  161.     Mach_MonPrintf("Open File \"%s\"\n", fileName);
  162. #endif
  163.     /*
  164.      * Open the file to bootstrap.
  165.      */
  166.     status = Open(fileName, FS_READ, 0, &handlePtr);
  167.     if (status != SUCCESS) {
  168.     Mach_MonPrintf("Can't open \"%s\", <%x>\n", fileName, status);
  169.     SunPromDevClose();
  170.     goto exit;
  171.     }
  172.     entry = FileLoad(handlePtr);
  173.     SunPromDevClose();
  174.     if (entry != -1) {
  175. #ifndef NO_PRINTF
  176.     Mach_MonPrintf("Transferring to location 0x%x\n", entry);
  177. #endif
  178.     Boot_Transfer(entry, romVectorPtr);
  179.     }
  180. exit:
  181.     (*romVectorPtr->exitToMon)();
  182. }
  183. @
  184.  
  185.  
  186. 1.9
  187. log
  188. @got it to compile, moved location for sun3 kernel
  189. @
  190. text
  191. @d11 1
  192. a11 1
  193. static char rcsid[] = "$Header: /sprite/src/boot/sunprom/RCS/main.c,v 1.8 90/11/27 10:37:55 rab Exp Locker: jhh $ SPRITE (Berkeley)";
  194. a18 1
  195. #undef NO_PRINTF
  196. a44 2
  197.     register MachMonBootParam *paramPtr;/* Ref to boot params supplied
  198.                      * by the PROM montor */
  199. d48 1
  200. d55 17
  201. a71 7
  202.     paramPtr = *romVectorPtr->bootParam;
  203. #ifdef notdef
  204.     for (index=0 ; index < 8; index ++) {
  205.     if (paramPtr->argPtr[index] != (char *)0) {
  206.         Mach_MonPrintf("Arg %d: %s\n", index, paramPtr->argPtr[index]);
  207.     } else {
  208.         break;
  209. d73 3
  210. a76 3
  211.     Mach_MonPrintf("Device %s\n", paramPtr->devName);
  212.     Mach_MonPrintf("File \"%s\"\n", paramPtr->fileName);
  213.  
  214. a77 1
  215. #endif
  216. d81 2
  217. a82 4
  218.     dev_config(paramPtr, &fsDevice);
  219.     if (paramPtr->fileName[0]) {
  220.     fileName = paramPtr->fileName;
  221.     }
  222. d100 1
  223. d104 1
  224. d106 1
  225. d108 2
  226. a109 1
  227.     Boot_Transfer(entry);
  228. d112 1
  229. a112 13
  230.     return;
  231. }
  232.  
  233. /*
  234.  * Exit is called by start.s
  235.  */
  236. void
  237. Exit()
  238. {
  239.     /*
  240.      * Return to start.s and then the PROM monitor.
  241.      */
  242.     return;
  243. @
  244.  
  245.  
  246. 1.8
  247. log
  248. @checking this in for rab -- jhh
  249. @
  250. text
  251. @d11 1
  252. a11 1
  253. static char rcsid[] = "$Header: /sprite/src/boot/sunprom/RCS/main.c,v 1.7 90/07/17 15:41:53 mendel Exp Locker: rab $ SPRITE (Berkeley)";
  254. d92 1
  255. a92 1
  256.     status = Fs_Open(fileName, FS_READ, 0, &handlePtr);
  257. @
  258.  
  259.  
  260. 1.7
  261. log
  262. @*** empty log message ***
  263. @
  264. text
  265. @d11 1
  266. a11 1
  267. static char rcsid[] = "$Header: /sprite/src/boot/scsiDiskBoot.new/RCS/main.c,v 1.6 89/01/06 08:12:02 brent Exp Locker: mendel $ SPRITE (Berkeley)";
  268. d74 1
  269. a74 1
  270.     Dev_Config(paramPtr, &fsDevice);
  271. @
  272.  
  273.  
  274. 1.6
  275. log
  276. @Mon_Printf => Mach_MonPrintf
  277. @
  278. text
  279. @d10 2
  280. a11 2
  281. #ifndef lint
  282. static char rcsid[] = "$Header: main.c,v 1.5 87/05/11 11:06:57 brent Exp $ SPRITE (Berkeley)";
  283. d17 3
  284. a19 1
  285. #include "fs.h"
  286. d21 2
  287. d50 2
  288. a51 1
  289.     FsHandle *handlePtr;        /* Handle for boot program file */
  290. d58 1
  291. a58 1
  292. #ifndef NO_PRINTF
  293. a67 1
  294. #endif
  295. a68 5
  296.     /*
  297.      * Set up VM so the user context is the same as the kernel context.
  298.      * This simplifies the mapping routines.
  299.      */
  300.     VmSetUserContext();
  301. d70 1
  302. d72 1
  303. a72 1
  304.      * Probe the boot device.
  305. d74 4
  306. a77 2
  307.     Dev_Config();
  308.  
  309. d79 1
  310. a79 1
  311.      * Set up for Block I/O to the boot device
  312. d81 4
  313. a84 11
  314. #ifndef NO_PRINTF
  315.     Sys_Printf("Boot %s(%d,%d,%d)%s\n", paramPtr->devName,
  316.              paramPtr->ctlrNum, paramPtr->unitNum,
  317.              paramPtr->partNum, paramPtr->fileName);
  318. #endif
  319.     if (paramPtr->devName[0] == 's' &&
  320.     paramPtr->devName[1] == 'd') {
  321.     Fs_AttachDisk(paramPtr->ctlrNum, paramPtr->unitNum,
  322.                      paramPtr->partNum);
  323.     } else {
  324.     Mach_MonPrintf("Can't boot \"%s\"\n", paramPtr->devName);
  325. d87 2
  326. a88 1
  327.  
  328. d92 1
  329. a92 1
  330.     status = Fs_Open(paramPtr->fileName, FS_READ, 0, &handlePtr);
  331. d94 1
  332. a94 1
  333.     Mach_MonPrintf("Can't open \"%s\", <%x>\n", paramPtr->fileName, status);
  334. d99 1
  335. a99 3
  336. #ifndef NO_PRINTF
  337.     Mach_MonPrintf("Transfering to %x\n", entry);
  338. #endif
  339. a111 1
  340.     Mach_MonPrintf("Boot exiting\n");
  341. @
  342.  
  343.  
  344. 1.5
  345. log
  346. @Complete trimmed down version.
  347. @
  348. text
  349. @d11 1
  350. a11 1
  351. static char rcsid[] = "$Header: main.c,v 1.4 86/07/24 11:25:46 brent Exp $ SPRITE (Berkeley)";
  352. d16 1
  353. a16 1
  354. #include "sunMon.h"
  355. a17 1
  356. #include "fsInt.h"
  357. d42 1
  358. a42 1
  359.     register Mon_BootParam *paramPtr;    /* Reference to boot parameters supplied
  360. d56 1
  361. a56 1
  362.         Mon_Printf("Arg %d: %s\n", index, paramPtr->argPtr[index]);
  363. d61 2
  364. a62 2
  365.     Mon_Printf("Device %s\n", paramPtr->devName);
  366.     Mon_Printf("File \"%s\"\n", paramPtr->fileName);
  367. d89 1
  368. a89 1
  369.     Mon_Printf("Can't boot \"%s\"\n", paramPtr->devName);
  370. d98 1
  371. a98 1
  372.     Mon_Printf("Can't open \"%s\", <%x>\n", paramPtr->fileName, status);
  373. d104 1
  374. a104 1
  375.     Mon_Printf("Transfering to %x\n", entry);
  376. d118 1
  377. a118 1
  378.     Mon_Printf("Boot exiting\n");
  379. @
  380.  
  381.  
  382. 1.4
  383. log
  384. @more trimming
  385. @
  386. text
  387. @d11 1
  388. a11 1
  389. static char rcsid[] = "$Header: main.c,v 1.3 86/07/23 13:33:11 brent Exp $ SPRITE (Berkeley)";
  390. d85 2
  391. a86 1
  392.     if (String_Compare("sd", paramPtr->devName) == 0) {
  393. d90 1
  394. a90 1
  395.     Mon_Printf("Can't boot from \"%s\"\n", paramPtr->devName);
  396. @
  397.  
  398.  
  399. 1.3
  400. log
  401. @cosmetic fixes
  402. @
  403. text
  404. @d11 1
  405. a11 1
  406. static char rcsid[] = "$Header: main.c,v 1.2 86/07/21 09:31:17 brent Exp $ SPRITE (Berkeley)";
  407. d89 1
  408. a89 1
  409.     Mon_Printf("Can't boot from dev \"%s\"\n", paramPtr->devName);
  410. d103 1
  411. d105 1
  412. @
  413.  
  414.  
  415. 1.2
  416. log
  417. @First complete versino
  418. @
  419. text
  420. @d11 1
  421. a11 1
  422. static char rcsid[] = "$Header: main.c,v 1.1 86/07/16 13:23:46 brent Exp $ SPRITE (Berkeley)";
  423. d45 3
  424. a47 3
  425.     register int index;
  426.     register int entry;
  427.     FsHandle *handlePtr;
  428. d49 4
  429. d80 5
  430. d87 1
  431. a87 1
  432.                      paramPtr->partNum, &handlePtr);
  433. d103 1
  434. d116 1
  435. a116 1
  436.     Mon_Printf("Exit called\n");
  437. @
  438.  
  439.  
  440. 1.1
  441. log
  442. @Initial revision
  443. @
  444. text
  445. @d11 1
  446. a11 1
  447. static char rcsid[] = "$Header: proto.c,v 1.4 86/03/20 14:00:11 andrew Exp $ SPRITE (Berkeley)";
  448. d17 2
  449. a20 1
  450. void Quit();
  451. d42 1
  452. d46 2
  453. d50 1
  454. d60 1
  455. d62 5
  456. a66 2
  457.     Quit("Quitting to monitor");
  458. }
  459. d68 30
  460. a97 6
  461. void
  462. Quit(msg)
  463.     char *msg;
  464. {
  465.     Mon_Printf("%s\n", msg);
  466.     Exit();
  467. d100 3
  468. @
  469.